package bean;

import java.util.ArrayList;
import java.util.List;

import dao.BookDAO;

import util.ObjectFactory;

import entity.CartItem;
import entity.Product;

public class Cart {
	private List<CartItem> items = new ArrayList<CartItem>();
	//添加
	public boolean addItem(CartItem item){
		System.out.println("item"+item.getPro().getId());
		for(int i=0;i<items.size();i++){
			CartItem curr = items.get(i);
			if(item.getPro().getId()==curr.getPro().getId()){
				System.out.println("curr"+curr.getPro().getId());
				return false;
			}
		}
		items.add(item);
		return true;
	}
	//查看
	public List<CartItem> findAll(){
		return items;
	}
	//删除
	public void delete(int id){
		for(int i=0;i<items.size();i++){
			CartItem curr = items.get(i);
			if(curr.getPro().getId()==id){
				items.remove(i);
			}
		}
	}
	
	//删除返回被删除的对象
	public CartItem del(int id){
		CartItem item=null;
		for(int i=0;i<items.size();i++){
			CartItem curr = items.get(i);
			if(curr.getPro().getId()==id){
				 item=items.remove(i);
			}
		}
		return item;
	}
	
	//恢复
	public CartItem recover(int id,List<CartItem> delItems){
		CartItem item=null;
		for(int i=0;i<delItems.size();i++){
			CartItem curr = delItems.get(i);
			if(curr.getPro().getId()==id){
				item=delItems.remove(i);
			}
		}
		return item;
	}
	
	//修改数量
	public void modifyQty(int qty,int id){
		for(int i=0;i<items.size();i++){
			CartItem curr = items.get(i);
			if(curr.getPro().getId()==id){
				curr.setQty(qty);
			}
		}
	}
	//删除全部
	public void clear(){
		items.clear();
	}
	//通过id查找item
	public CartItem findById(int id){
		for(int i=0;i<items.size();i++){
			CartItem curr = items.get(i);
			if(id==curr.getPro().getId()){
				return curr;
			}
		}
		return null;
	}
	//查询总价
	public double cost(){
		double sum=0;
		for(int i=0;i<items.size();i++){
			CartItem curr = items.get(i);
			sum+=curr.getPro().getDangPrice()*curr.getQty();
		}
		return sum;
	}
	//折扣多少
	public double cutPrice(){
		double sum=0;
		for(int i=0;i<items.size();i++){
			CartItem curr = items.get(i);
			sum+=(curr.getPro().getFixedPrice()-curr.getPro().getDangPrice())*curr.getQty();
		}
		return sum;
	}
	/**
	 * 将cart中保存的商品转换成一个字符串
	 * 字符串格式类似于: 1,8;2,11;3,8
	 * 如果没有任何商品，返回0
	 * @return
	 */
	public String store(){
		StringBuffer buf = new StringBuffer();
		if(items.size()==0){
			buf.append("0");
		}else{
			for(int i=0;i<items.size();i++){
				CartItem item = items.get(i);
				buf.append(item.getPro().getId()+","+item.getQty()+";");
			}
		}
		if(buf.length()>1){
			buf.deleteCharAt(buf.length()-1);
		}
		return buf.toString();
	}
	/**
	 * 依据content内容重新恢复cart中的商品信息。
	 * @param content 类似于: 1,8;2,11;3,8
	 */
	public void load(String str){
		if(str.equals("0") || str==null){
			return;
		}
		String[] s = str.split(";");
		BookDAO dao = ObjectFactory.getInstance(BookDAO.class);
		for(int i=0;i<s.length;i++){
			String[] str1 = s[i].split(",");
			int id = Integer.parseInt(str1[0]);
			int qty=Integer.parseInt(str1[1]);
			CartItem item = new CartItem();
			Product p;
			try {
				p = dao.findProById(id);
				item.setPro(p);
				item.setQty(qty);
				items.add(item);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	public static void main(String[] args){
		Cart cart = new Cart();
		cart.load("2,1;5,1");
		System.out.println(cart.findAll().toString());
	}
}
